// 分页混入对象
export default {
  data() {
    return {
      // 遮罩层
      loading: true,
      //创建时间绑定的对象
      createTimeValue: [],
      // 是否显示搜索条件
      showSearch: true,
      // 表单查询条件对象
      queryParams: {
        pageNum: 1,
        pageSize: 10
      },
      // 分页表格分页的结果对象
      tableResult: {
        total: 0,
        rows: []
      },
      // 编辑用的
      //表格选中的对象
      mutilrows: [],
      //表格选中对象的主键的值
      ids: [],
      // 编辑按钮禁用
      single: true,
      // 删除按钮禁用
      multiple: true,
      // 实体类主键名（为了解决数据表主键不是id的问题）
      primaryKey: 'id'
    }
  },
  methods: {
    /** 重置按钮操作 */
    resetQuery() {
      this.createTimeValue = [];
      this.resetForm("queryForm");
      this.btnSearch()
    },
    // 查询按钮
    btnSearch() {
      this.queryParams.pageNum = 1
      this.fetchData()
    },
    // 每页几笔发生变化
    handleSizeChange(val) {
      this.queryParams.pageNum = 1
      this.queryParams.pageSize = val
      // 重新查询
      this.fetchData()
    },
    // 当前页发生变化
    handleCurrentChange(val) {
      this.queryParams.pageNum = val
      // 重新查询
      this.fetchData()
    },
    // 表格选择变化 rows=[]
    handleSelectionChange(rows) {
      this.mutilrows = rows

      this.ids = rows.map(p => p[this.primaryKey])

      this.single = !(rows.length === 1)
      this.multiple = !(rows.length > 0)

    },
    // 查询数据
    fetchData() {
      // 解决日期的问题  beginTime,  endTime
      this.loading = true
      delete this.queryParams.beginTime
      delete this.queryParams.endTime
      if (this.createTimeValue && this.createTimeValue.length === 2) {
        this.queryParams.beginTime = this.createTimeValue[0]
        this.queryParams.endTime = this.createTimeValue[1]
      }


      // 自定义 Hook钩子函数 (在java叫 接口interface)
      if (this.fetchDataHook && this.fetchDataHook instanceof Function) {
        let hookInvok = this.fetchDataHook()

        hookInvok(this.queryParams).then(resp => {
          if (resp.data.rows){
            this.tableResult.rows = resp.data.rows
          }else{
            this.tableResult.rows = resp.data
          }
          this.loading = false
        })

      } else {
        this.loading = false
        this.$message.error('必须先创建数据请求的，函数名为fetchDataHook的钩子函数');
      }


    }
  },
  //生命周期钩子
  created() {
    this.fetchData()
  }
}
